• Draw context panes are supported for QuickDraw 3D on Windows. This functionality existed on the Macintosh but was absent until this release. Panes allow a scene to be rendered into a rectangle whose dimensions are smaller than the window’s bounds.
• Clearing the model from the Viewer with Q3ViewerClear/Q3WinViewerClear is now functional on Macintosh and Windows.
• Masks are supported in the QuickDraw 3D draw context on Windows. This functionality existed on the Macintosh but was absent until this release. With masks a scene can be rendered into an irregularly shaped area of the window defined by a TQ3Bitmap.
• In the Windows debugging libraries the calls to create and change draw contexts have additional validation checks.
• When using the Apple QD3D HW Driver rendering any triangle with texture UV values very close to 0.0 could sometimes result in a clamped texture “stretched” across the triangle. This has been fixed.
• Rendering with the Interactive Renderer sometimes incorrectly clipped triangles fully contained within the frustum but whose three vertices were very near or on the frustum planes. This also occurred with lines whose vertices were on or very near the frustum.
• If the quaternion passed to Q3Quaternion_Normalize had a scale less than zero a warning was posted but the quaternion returned in the result parameter was unset. Also, when the scale was equal to one the quaternion returned in the result parameter was unset. This function now returns the input quaternion as the result parameter and as the function result.
• Under certain circumstances first opening a movie containing a 3D track with the MoviePlayer, then opening the Scrapbook to a movie with a 3D track, quitting the MoviePlayer, and then re-rendering in the Scrapbook again caused a crash. This has been fixed.
• If the bounds of the Viewer were made smaller than the enclosing window with Q3ViewerSetBounds, the Viewer’s bounds decreased but the control strip drew over the contents of the window outside the Viewer bounds in the lower right. This has been fixed.
• Window point picking on markers and pixmap markers always returned a distance of 0 so that any geometry in front of the marker couldn’t be picked. This has been corrected so the distance is calculated from the marker’s location to the camera’s location.
• Parametric UVs are implemented for the NURB curve geometry.
• It is now possible to get UV parametric values for polylines, ellipses, NURB curves geometries. This can be done with the Q3Pick_GetDPicketailData function and a pick detail mask value of kQ3PickDetailMaskUV.
• If an unknown element is encountered when trimesh face attributes are being read in, the creation of the trimesh failed. This has been fixed.
• Pixmap markers were clipped incorrectly with the Wireframe renderer.
• Push and pop objects have been added to allow objects read in to be the same as what was written out. This is accomplished through the new Q3Push_Submit and Q3Pop_Submit API calls.
• Sometimes colored polylines rendered with the Wireframe renderer resulted in incorrect colors when they were clipped.
• Duplicating a camera object with Q3Object_Duplicate produced unusable camera object. The resulting camera object should have contained a copy of the original camera data rather than a reference to the same data.
• The fog style has been implemented in QuickDraw 3D and supports 4 fog different modes: linear, exponential, exponential squared and alpha. See the “QD3D 1.6 Modifications” document for a description of it’s capabilities and it’s usage.
• When window point picking on a pixmap marker, the pixmap marker’s xOffset wasn’t taken into account. As a result, if the xOffset value was a non-zero value the pick point would only hit a distance as far as (width - xOffset) from the left side of the pixmap marker.
• RAVE draw contexts can be obtained from the QuickDraw 3D API level. See the functions Q3InteractiveRenderer_CountRAVEDrawContexts and Q3InteractiveRenderer_GetRAVEDrawContexts described in the “QD3D 1.6 Modifications” document and their use.
• Several new vendor IDs have been added to the QD3DAcceleration.h interface file.
• On the Macintosh calling Q3DrawContext_SetPane didn’t update the draw context if new pane was moved but it’s dimensions were the same size as old pane.
• Added trademark character to product name strings in CCI™ resources for Extensions Manager.
• Added the Wire custom element to the Custom Elements library. This allows applications to attach their own defined data to 3D objects.
• Added the world ray pick object type to allow picking in world-space with an arbitrarily positioned ray on any kind of geometry. See the “QD3D 1.6 Modifications” document for a more detailed description and use of world ray picking.
• Pixmap draw contexts can now be used for double buffered on-screen drawing on the Macintosh platform.
• Changed the Windows Viewer to limit resizing of the window to a rectangle with dimensions no smaller than the maximum width of all possible buttons plus an extra margin and a height equal to the menu height plus an extra margin.
• Under some circumstances on the Macintosh platform, opening and closing a movie twice containing a 3D track sometimes caused a crash. This has been fixed.
• Updated balloon help strings with descriptions that more closely convey the actual behavior of the control strip buttons.
• On the Macintosh platform sometimes if the window was very large the Wireframe renderer failed to render because the draw context couldn’t be allocated. Now if it first attempts to create the draw context in temp memory and if this fails it then tries again in the application’s heap.
• With plug-in renderers if there was a failure while rendering submitted objects and an EndFrame method wasn’t implemented the system would crash. This condition is handled and the view is canceled appropriately.
• The Q3Marker_GetYOffset and Q3Marker_SetYOffset calls incorrectly operated on the x offset parts of the marker rather than the intended y offset, and functioned like Q3Marker_GetXOffset and Q3Marker_SetXOffset instead. They now work properly with the marker’s y offset value.
• The Unix storage object type was deprecated because it depended on the definition of FILE structure which could vary between Standard C Library implementations. Using the Unix storage object type and the associated Q3Storage_Unix_New, Q3Storage_Unix_Set, Q3Storage_Unix_Get APIs was problematic and usually resulted in failures when reading/writing 3DMF files. This could happen, for example, if an application built with one Standard Library implementation made one of these calls to QuickDraw 3D which was based on a different Standard Library. The calls Q3Storage_Unix_New, Q3Storage_Unix_Set, Q3Storage_Unix_Get, and Q3UnixStorage_GetType have been removed from the interfaces and their functionality disabled, however these symbols still remain in the libraries. Applications which use the Unix storage type should use the Unix Path storage type or some other platform specific file storage type.
Known Issues
• Playing movies containing 3D sprite tracks with a Apple 3D HW card installed may produce rendered 3D images with random bit data when virtual memory is enabled under Mac OS 8.5. Note the default install of Mac OS 8.5 install has VM enabled. Users who want hardware with the Apple 3D HW acceleration card should turn off VM to avoid this problem. As recommended in previous QuickDraw 3D releases the Apple 3D HW card works best with VM disabled.
• Due to a change in QuickDraw 3D for the Macintosh, applications are required to call Q3Exit before quitting. The memory allocated for objects instantiated either by the application or internally by QuickDraw 3D itself is now persistent and will not be disposed automatically by the system even when the application terminates via exit to shell. Make sure applications call Q3Exit to avoid this possible leaked memory which may eventually cause the system to run out of memory.
• The QuickTime updater will not launch if a user does not have QuickDraw 3D installed, but an application still needs it. Users will need to launch the updater and do a custom install of QuickDraw 3D. In addition, previous ousers of QuickDraw 3D 1.5.4 will not get 1.6 with a default Classic install.
Apple, the Apple logo, Macintosh, and Mac OS are trademarks of Apple Computer, Inc., registered in the U.S. and other countries. QuickDraw is a trademark of Apple Computer, Inc. All other product names are trademarks or registered trademarks of their respective holders. Mention of non-Apple products is for informational purposes and constitutes neither an endorsement nor a recommendation. Apple assumes no responsibility with regard to the selection, performance, or use of these products.